package pe.com.rimac.portal.common.model;

public class TipoDocumento 
{
	/**
	 * Factura
	 */
	public static final TipoDocumento FACTURA = new TipoDocumento("FA", 1);
	/**
	 * Boleta de Venta
	 */
	public static final TipoDocumento BOLETA_VENTA = new TipoDocumento("BV", 2);
	/**
	 * Nota de D&eacute;bito
	 */
	public static final TipoDocumento NOTA_DEBITO = new TipoDocumento("NC", 3);
	/**
	 * Nota de Cr&eacute;dito
	 */
	public static final TipoDocumento NOTA_CREDITO = new TipoDocumento("NA", 4);
	
	private String strvalue;
	private int intvalue;
	
	private TipoDocumento(String strvalue, int intvalue)
	{
		this.strvalue = strvalue;
		this.intvalue = intvalue;
	}
	
	/**
	 * @return
	 */
	public int getIntValue()
	{
		return this.intvalue;
	}
	
	/**
	 * @return
	 */
	public String getStringValue()
	{
		return this.strvalue;
	}
	
	/**
	 * @param value
	 * @return
	 */
	public static TipoDocumento fromStringValue(String value)
	{
		if(FACTURA.getStringValue().equals(value))
		{
			return FACTURA;
		}
		else if(BOLETA_VENTA.getStringValue().equals(value))
		{
			return BOLETA_VENTA;
		}
		else if(NOTA_DEBITO.getStringValue().equals(value))
		{
			return NOTA_DEBITO;
		}
		else if(NOTA_CREDITO.getStringValue().equals(value))
		{
			return NOTA_CREDITO;
		}
		throw new RuntimeException("No existe Tipo de Documento para el valor '" + value + "'");
	}
	
	/**
	 * @param value
	 * @return
	 */
	public static TipoDocumento fromIntValue(int value)
	{
		if(FACTURA.getIntValue() == value)
		{
			return FACTURA;
		}
		else if(BOLETA_VENTA.getIntValue() == value)
		{
			return BOLETA_VENTA;
		}
		else if(NOTA_DEBITO.getIntValue() == value)
		{
			return NOTA_DEBITO;
		}
		else if(NOTA_CREDITO.getIntValue() == value)
		{
			return NOTA_CREDITO;
		}
		throw new RuntimeException("No existe Tipo de Documento para el valor '" + value + "'");
	}
}
